// 
// Bachelor of Software Engineering
// Media Design School
// Auckland
// New Zealand
//
// (c) 2005 - 2014 Media Design School
//
// File Name	: GameApp.h
// Desrciption	: CGameApp declaration file.
// Author(s)	: Hayden Asplet.
// Mail			: hayden.asplet@mediadesignschool.com
//

#pragma once

#ifndef __GAMELOGIC_H__
#define __GAMELOGIC_H__

// Library Includes

// Local Includes
#include "Sprite/Sprite.h"

enum EGameState {
	GS_TitleScreen,
	GS_MainMenu,
	GS_HighScore,
	GS_Options,
	GS_Running
};

class CGameLogic {
	// Member Functions
public:
	CGameLogic();
	virtual ~CGameLogic();

	virtual bool VInit();
	virtual void VUpdate(float _fDeltaTime);
	virtual void VChangeState(EGameState _eState);

	virtual bool VStartDrag(const CPoint& _krDragStartPosition) = 0;
	virtual void VReleaseDrag() = 0;

	virtual void VOnLMBPressed() = 0;
	virtual void VOnRMBPressed() = 0;
	virtual void VOnLMBReleased() = 0;
	virtual void VOnRMBReleased() = 0;
	virtual void VOnLDoubleClick() = 0;
protected:
private:

	// Member Variables
public:
protected:
	EGameState m_eState;	// The current state or screen of the game.
	float m_fElapsedTime;	// The amount of time elapsed since the game started.
private:
};

#endif